package com.secsys.util;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.Vector;

import com.secsys.dto.MenuDTO;
import com.secsys.model.TbSysResource;
import com.secsys.model.TbSysRoleResource;

/**
 * @Description 菜单辅助工具类
 * @author LiusQ
 * 
 */
public class MenuUtil {
	private  LinkedList  parentResource = new LinkedList(); // 缓存父资源对象
	 
   /**
    * @Description 自动搜索父资源选项卡的持久类并存入到parentResource属性中 
    * @param menuSet  角色资源选项卡持久类集合
    */
	public   void autoSearchMenu(Set<TbSysRoleResource> menuSet) {
		Iterator<TbSysRoleResource> iterator = menuSet.iterator();
		while (iterator.hasNext()) { // 遍历Iterator容器
			TbSysRoleResource roleResource = (TbSysRoleResource) iterator
					.next(); // 取得角色资源持久类
			TbSysResource resource = roleResource.getTbSysResource(); // 取得资源持久类
			if (Integer.parseInt(resource.getParentFlag())>0) {
				parentResource.add(resource);
				
				System.out.println("!!!!!!!!!!!!!!!!!!!!");
			}
		}
	}
    /**
     * @Description  初始化菜单并排序，将属于父类资源选项卡的对象存放到同一位置 
     * @param resources  角色资源选项卡持久类集合
     * @return   返回排序后的资源选项卡集合
     */
	public   LinkedList<MenuDTO> initSortMenu(Set<TbSysRoleResource> resources) {
		autoSearchMenu(resources); // 获取父资源选项卡
		Object[] iterator = resources.toArray(); // 取得TbSysRoleResource持久类集合
		LinkedList<MenuDTO> menuList=new LinkedList<MenuDTO>();    //存放菜单
             MenuDTO menuDTO=null;
           System.out.println(">>>>>"+iterator.length);
		for (int i = 0; i < parentResource.size(); i++) {
			TbSysResource tsre = (TbSysResource) parentResource.get(i); // 取得父资源对象
			menuDTO=new MenuDTO(); 
            menuDTO.setCode(tsre.getSequenceNum());
            menuDTO.setMenuName(tsre.getMenuName());
            menuDTO.setParentFlag(Integer.parseInt(tsre.getParentFlag()));
            menuDTO.setUri(tsre.getUri());
            System.out.println(tsre.getMenuName());
            menuList.add(menuDTO); //先存父资源选项卡
           
            System.out.println("***************");
			String sequenceNum = tsre.getSequenceNum(); // 取得资源选项卡的唯一序列号
		    
			 for(int j=0;j<iterator.length;j++) { // 遍历TbSysRoleResource持久类集合
				TbSysRoleResource roleResource = (TbSysRoleResource) iterator[j];
				TbSysResource resource = roleResource.getTbSysResource();
			  
				if (resource.getSequenceNum().startsWith(sequenceNum)&&!resource.getSequenceNum().equals(sequenceNum)) { // 判断是否属于该序列号下的资源
                          menuDTO=new MenuDTO();
                          menuDTO.setCode(resource.getSequenceNum());
                          menuDTO.setMenuName(resource.getMenuName());
                          menuDTO.setParentFlag(Integer.parseInt(resource.getParentFlag()));
                          menuDTO.setUri(resource.getUri());
                          System.out.println(resource.getMenuName());
                          menuList.add(menuDTO);  
                          System.out.println(menuList.size());
				}
			}
		}
        return menuList;
	}

}
